package geor.view;

import geor.app.R;
import geor.model.CompraHelper;
import android.content.ContentValues;
import android.database.SQLException;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import lib.view.FullActivity;

public class SalvarCompraVistaActivity extends FullActivity {

	private String idParcela = "1"; // em compras a vista há apenas uma parcela
									// sempre.
	private String idConta = "1"; // id conta sempre 1, enquanto o aplicativo
									// não der suporte a mais de uma.
	private Button btSalvar = null;
	private EditText etValor = null;
	private EditText etDescricao = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.salvar_receita_compra_vista);

		helper = new CompraHelper(this);
		load();
		set();
	}

	@Override
	public void createOrUpdate(ContentValues values) {
		boolean continuaAplicacao = false;
		if (validate(values)) {
			try {
				helper.getDatabase().beginTransaction();
				helper.getWritableDatabase().execSQL(
						"UPDATE conta SET saldo = saldo - ? WHERE _id = ?",
						new String[] { values.getAsString("valor"), idConta });
				long contasPagarId = helper.create(values);
				helper.getWritableDatabase()
						.execSQL(
								"INSERT INTO contas_pagar_parcela (_id,contas_pagar_id,vencimento,foi_pago)  values  (?,?,current_date,1)",
								new String[] { idParcela,
										String.valueOf(contasPagarId) });
				helper.getDatabase().setTransactionSuccessful();
				continuaAplicacao = true;
			} catch (SQLException e) {
				Log.e("SalvarCompraVistaActivity", e.getMessage());
				show("Ocorreu um erro ao salvar os dados.");
			} finally {
				helper.getDatabase().endTransaction();
			}
			if (continuaAplicacao) {
				finish();
			}
		}
	}

	@Override
	public boolean delete(String id) {
		return false;
	}

	@Override
	public boolean validate(ContentValues values) {
		if (values.getAsDouble("valor") == 0 ) {
			show("O valor inserido deverá ser maior que zero!");
			return false;
		}
		if (values.getAsString("descricao").length() == 0 || values.getAsString("valor").length() == 0) {
			show("Todos os campos são obrigatorios!");
			return false;
		}
		return true;
	}

	@Override
	public void load() {
		btSalvar = (Button) findViewById(R.id.btSalvar);
		etValor = (EditText) findViewById(R.id.etValor);
		etDescricao = (EditText) findViewById(R.id.etDescricao);
	}

	@Override
	public void set() {
		btSalvar.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				ContentValues values = new ContentValues();
				values.put("valor", etValor.getText().toString());
				values.put("descricao", etDescricao.getText().toString());
				createOrUpdate(values);
			}
		});

	}

	@Override
	public void populate(ContentValues values) {
	}

}
